package JavaGrammar;

import java.util.*;
import java.io.*;

import antlr.collections.AST;
import antlr.collections.impl.*;
import antlr.*;

//////////////////////////////////////////////////////////////////////////
//// LinkedAST
/**

     Essa classe foi desenvolvida para permitir percorrer a arvore de
ASTs a partir de qualquer no ate a raiz da arvore. Isso e util para
os metodos que devem introduzir novos nos a arvore.

@author Ivan Jeukens
@version v 0.1 01/04/2002
*/
public class LinkedAST extends CommonAST {

    public LinkedAST() {
        super();   
    }
    
    public LinkedAST(Token tok) {
        super(tok);
    }
    
    ///////////////////////////////////////////////////////////////////
    ////                         public methods                    ////
    
    public void setParent(AST parent) {
        _parent = parent;
        if(parent == null) return;
        
        AST v = parent.getNextSibling();
        if(v == this) {
            _isSibling = true;
        }
        else {
            _isSibling = false;
        }
    }
    
    public AST getParent() {
        return _parent;
    }

    // Se nao for sibling, e child.
    public boolean isSibling() {
        return _isSibling;
    }

    ///////////////////////////////////////////////////////////////////
    ////                      private variables                    ////

    private AST _parent;
    private boolean _isSibling;
}
